//387. 字符串中的第一个唯一字符
//已解答
//简单
//相关标签
//premium lock icon
//相关企业
//给定一个字符串 s ，找到 它的第一个不重复的字符，并返回它的索引 。如果不存在，则返回 - 1 。
class Solution {
public:
    int firstUniqChar(string s) {
        //// 方法一：计数各字母出现次数，遍历字符串查找第一个出现次数为1的字母
        //int alphabet[26] = { 0 };
        //for (auto ch : s)
        //{
        //    alphabet[ch - 'a'] += 1;
        //}
        //for (int i = 0; i < s.size(); i++)
        //{
        //    if (alphabet[s[i] - 'a'] == 1) return i;
        //}
        //return -1;
        
        // 方法二：正序遍历+反序遍历，比较找到的下标，若相等则只出现一次
        for (int i = 0; i < s.size(); i++)
        {
            int index = s.find(s[i]);
            int reverse_index = s.rfind(s[i]);
            if (index == reverse_index) return i;
        }
        return -1;
    }
};